<?php
class Feiras extends Controller{
    
    public function init(){
        $verificador = new LoginModel();/*Chama o modelo do login */
        $verificador->verificador();
    }
    
    public function index_action(){
        $feira = new FeiraModel();
        
        $feira_lista = $feira->selecionar(null, null, null, "DATA DESC");
        $dados["feira_lista"] = $feira_lista;
        $this->view("feira", "lista", $dados);
    }
    
    public function cadastro(){
        
        $this->view("feira", "formCadastro", null);
    }
    
    public function cadastrar(){
        $feira = new FeiraModel();
        $redi = new redirectorHelper();
        
        $dados = $feira->validar_campos();
      //  echo count($dados);exit();
        if (count($dados) == 7){ /*Verifica se não contem nenhum erros */
        $feira->cadastrar($dados); /*Chama método para inserir no banco */
        
            $_SESSION['tempo'] = strtotime(date("Y-m-d H:i:s"));
            $_SESSION['msg'] = "Cadastrado realizado.";
        
        $feira->retorna_ultimo_id($dados["ID_FEIRA"]);    
        $redi->goToController("feiras"); /*Redireciona para o controller */
    }
    else {/*Se houver erros redireciona para a mesma página listando os erros cometidos */
        $array['dados'] = $dados;
        $this->view("feira", "lista", $array);
    }
    }
    
    public function editar(){
        $feira = new FeiraModel();
        
        $id = $this->getParam("id");
   
    $feira_lista = $feira->selecionar("ID_FEIRA=\"$id\"", null, null, null);
    $dados["feira_lista"] = $feira_lista;
    
    $this->view("feira", "editar", $dados);
    }
    
    public function atualizar(){
    $feira = new FeiraModel();
    $redi = new redirectorHelper();
    
    $id = $this->getParam("id");
    
    $dados = $feira->validar_campos();
    
    if (count($dados) == 7){
        $feira->update("feiras",$dados,"ID_FEIRA=\"$id\"" );
        $_SESSION['tempo'] = strtotime(date("Y-m-d H:i:s"));
        $_SESSION['msg'] = "Registro editado.";
        $redi->goToController("feiras");
    }
    else {
        $array['dados'] = $dados;
        $this->view("feira", "editar", $array);
    }
    }
    /*Deleta uma feira */
    public function deletar(){
        $feira = new FeiraModel();
        $redi = new redirectorHelper();
        
        $id = $this->getParam("id"); 
        
 
        $feira->delete("ID_FEIRA ='$id'");
        $_SESSION['tempo'] = strtotime(date("Y-m-d H:i:s"));
        $_SESSION['msg'] = "Registro deletado.";
        $redi->goToController("feiras");
    }
    /*Gerenciamento de artesão com feira */
    public function artesao_feira(){
        $feira = new FeiraModel();
        $id_feira = $this->getParam("id");
        
        $feira_lista = $feira->aretsaos_participa_feira($id_feira);
       
        if (empty($feira_lista)){
            $feira_lista = $feira->selecionar("ID_FEIRA= '$id_feira'",null, null, null);
            $dados["feira_lista"] = $feira_lista;
            $this->view("feira", "listarArtesaos", $dados);
        }else{
       
            $dados["feira_lista"] = $feira_lista;
            $this->view("feira", "listarArtesaos", $dados);
        }
    }
    /*Adicionar artesão a feira */
    /*Primeira lista todos os artesões do sistema. */
    /*Depois verifica se já tem algum artesão vinculado */
    /*Lista os artesões disponiveis para cadastro. */
    public function artesao(){
        $feira = new FeiraModel();
        $arte = new ArtesaoModel();
        $array = array();
        $id_feira = $this->getParam("id");
        $dados["parametros_lista"] = $parametros_lista = array ( "ID_FEIRA" => $id_feira ); 
        
        /*Evitando Sql inject ou outros bugs por usuário mal intecionados */
        $expressao2 = "/^[0-9]+$/"; /*Somente números*/
        if (!preg_match($expressao2, $id_feira)){
        $id_feira = 99999999999;    
        }
        
        $artesao_inclusos = $feira->artesao_ja_adicionados($id_feira);
        $artesaos_lista = $arte->read_campos("CPF , NOME", null, null, null, 'CPF ASC');
       
       /*Faz a comparação dos CPF e deleta os que tiver em comum. */
      
        if (count($artesao_inclusos) > 0){
            
            $i = 0;
            foreach ( $artesaos_lista as $lista){ /*Joga num array */
            $array_arte_cpf[$i] = $lista['CPF']; /*Lista de todos os artesões. */
            $array_arte_nome[$i] = $lista['NOME'];
            $i++;
            }
            
            $j=0;
            foreach ($artesao_inclusos  as $inclusos){/*Joga num array */
            $array_arte_incluso_cpf[$j] = $inclusos["CPF"]; /*Lista de todos os artesões já inclusos. */
            $array_arte_incluso_nome[$j] = $inclusos["NOME"];
            $j++;   
            
            }
            
            $dados2["restante_cpf"]  = $restante = array_diff( $array_arte_cpf , $array_arte_incluso_cpf );
            $dados3["restante_nome"]  = $restante = array_diff( $array_arte_nome , $array_arte_incluso_nome );
           
          if (count($dados2["restante_cpf"]) != 0 || count($dados3["restante_nome"]) != 0 ){
                $array_dados["dados_lista"] = array_combine($dados2["restante_cpf"], $dados3["restante_nome"]);
                $this->view("feira", "feiraArtesaosForm", $dados, $array_dados );
                    }
                     else { $this->view("feira", "feiraArtesaosForm", $dados, null);}   
                       
        } else {
            $dados2["artesao_lista"] = $artesao_lista = $arte->read();
            
            $this->view("feira", "feiraArtesaosForm", $dados, $dados2);
            }
        
    }
    /*Cadastrar artesão a feira */
    public function addArtesaos(){
        $feira = new FeiraModel();
        $redi = new redirectorHelper();
        $id = $_POST["id_feira"];
        
            $_SESSION['tempo'] = strtotime(date("Y-m-d H:i:s"));
            $_SESSION['msg'] = "Cadastrado realizado.";
        
        $feira->cadastrar_artesaos();
        $redi->setUrlParamenter("id", $id);
        $redi->goToControllerAction("feiras", "artesao_feira");
    }
    
    
   /*Remove 1 artesão a feira. */
    public function deleta_artesao(){
        $feira = new FeiraModel();
        $redi = new redirectorHelper();
        
        $id = $this->getParam("id"); 
        $cpf = $this->getParam("cpf");
 
        $feira->remover_artesao_feira("id_feira=$id AND cpf_artesao='$cpf'") or die("eerro");
        $_SESSION['tempo'] = strtotime(date("Y-m-d H:i:s"));
        $_SESSION['msg'] = "Registro deletado.";
        $redi->setUrlParamenter("id", $id);
        $redi->goToControllerAction("feiras", "artesao_feira"); 
    }
    
    
    /*Fim Artesão a feira */
    
    
    /* Lista todos os detalhes da feira */
    
    public function detalhes(){
        $feira = new FeiraModel();
        
        $id_feira = $this->getParam("id");
        $artesao_feira = $feira->aretsaos_participa_feira($id_feira); /* Seleciona os artesões que vinculados a feira */
        $feira_lista = $feira->selecionar("ID_FEIRA=\"$id_feira\"", null, null, null); /*Seleciona a feira */
        
        $dados["feira_lista"] = $feira_lista;
        $dados2["artesao_feira"] = $artesao_feira;
        
        $this->view("feira" , "detalhes" , $dados , $dados2 );
    }
    
   
}
?>
